#include "funcionesSelect.h"
#include "planificador.h"

void nodoSelect_crear(struct listaSelect **punteroEstructura, int32_t descriptor){
	*punteroEstructura=calloc(1,sizeof(struct listaSelect));
	(*punteroEstructura)->descriptor=descriptor;
	(*punteroEstructura)->tipo=-1;
	(*punteroEstructura)->status=-1;
	(*punteroEstructura)->siguiente=NULL;
	(*punteroEstructura)->punteroBackup=NULL;
	(*punteroEstructura)->punteroBackupFin=NULL;

}

void colaSelect_meter(struct listaSelect **punteroFte,struct listaSelect **punteroFin, struct listaSelect **punteroEstructura)
{
	if(*punteroFte==NULL)
		{
			*punteroFte=*punteroEstructura;
		}
	else
		{
			(*punteroFin)->siguiente=*punteroEstructura;
		}
	*punteroFin=*punteroEstructura;
}

// el int valor sería el numero de sector a eliminar
void nodoDeColaSelect_eliminar(struct listaSelect **punteroFte,struct listaSelect **punteroFin,struct listaSelect **punteroAux,int descriptor) {
	listaSelect *auxiliar;
	listaSelect *anterior;
	auxiliar = *punteroFte;
	while(auxiliar && (auxiliar->descriptor != descriptor)) {
		anterior = auxiliar;
		auxiliar = auxiliar->siguiente;
	}
	if (*punteroFte == auxiliar){
		*punteroFte = (*punteroFte)->siguiente;
		*punteroAux=*punteroFte;
	}else{
		anterior->siguiente = auxiliar->siguiente;
		*punteroAux=anterior;

	}
	if(auxiliar==*punteroFin){
			*punteroFin=anterior;
		}
	free(auxiliar);
	auxiliar=NULL;


	return;
}


void colaSelect_liberar(struct listaSelect **punteroFrente,struct listaSelect **punteroFin)
{
	struct listaSelect *punteroListaAuxiliar;
	while (*punteroFin!=NULL)
		{
		punteroListaAuxiliar=*punteroFrente;
		(*punteroFrente)=(*punteroFrente)->siguiente;
		printf("%d\n",punteroListaAuxiliar->descriptor);
		if(*punteroFrente==NULL)
			{
			*punteroFin=NULL;
			}
		free(punteroListaAuxiliar);
		punteroListaAuxiliar=NULL;
		}
}
